package org.apcs.pokemon.pokemon;

/**
 * Author:			Zachary Reed
 * Date Created:	Mar 24, 2010
 * Last Modified:	Mar 28, 2010
 * Package:			org.apcs.pokemon.pokemon
 * Filename:		Bulbasaur.java
 * Description:		A class that defines the default stats for Bulbasaur &
 * 					constructs new Bulbasaur pokemon.
 */

/** Bulbasaur
 * Number:			001							Base HP:  45	HP Yield:   0
 * M/F Ratio:		87.5% male					Base AT:  49	AT Yield:   0
 * Type(s):			Grass,Poison				Base DE:  49	DE Yield:   0
 * Exp @ lvl 100:	1,059,860					Base SA:  65	SA Yield:   1
 * Evolves @ lvl:	16							Base SD:  65	SD Yield:   0
 * Evolves into:	Ivysaur						Base SP:  45	SP Yield:   0
 * Base moves:		Tackle,Growl								XP Yield:  64
 */

public class Bulbasaur extends Pokemon {

	protected static final int NUMBER               =	1;
	protected static final String NAME              =   "Bulbasaur";
	protected static final double MFRATIO           =	87.5;
	protected static final int[] TYPES              =	{3,7};
	protected static final int[] STATS              =	{45,49,49,65,65,45};
	protected static final int[] EVYIELDS           =	{0,0,0,1,0,0,64};
	protected static final int EXPTYPE              =	3;
	protected static final int EVOLVES_AT_LVL       =	16;
	protected static final int EVOLVES_INTO         =	2;
	protected static final int[] BASE_MOVES         =	{33,45};
    protected static final int[][] LEVEL_UP_MOVES   =   {{7,73},{13,22},{20,77},{27,75},{34,74},{41,79},{48,76}};
    protected static final int[] TMHM_MOVES         =   {14,92,34,36,38,99,72};

	/* Create new Bulbasaur with default name */
	public Bulbasaur(int trainerID) {
		super(NUMBER,NAME,false,Pokemon.calcGender(MFRATIO),TYPES,
			STATS,EVYIELDS,EXPTYPE,EVOLVES_AT_LVL,EVOLVES_INTO,
			trainerID,BASE_MOVES,LEVEL_UP_MOVES,TMHM_MOVES);
	}

	/* Create new Bulbasaur with nickname */
	public Bulbasaur(String name,int trainerID) {
		super(NUMBER,name,true,Pokemon.calcGender(MFRATIO),TYPES,
			STATS,EVYIELDS,EXPTYPE,EVOLVES_AT_LVL,EVOLVES_INTO,
			trainerID,BASE_MOVES,LEVEL_UP_MOVES,TMHM_MOVES);
	}

	/* Create new Bulbasaur with default name & custom level*/
	public Bulbasaur(int level,int trainerID) {
		super(NUMBER,NAME,false,level,Pokemon.calcGender(MFRATIO),TYPES,
			STATS,EVYIELDS,EXPTYPE,EVOLVES_AT_LVL,EVOLVES_INTO,
			trainerID,BASE_MOVES,LEVEL_UP_MOVES,TMHM_MOVES);
	}

	/* Create new Bulbasaur with nickname & custom level */
	public Bulbasaur(String name,int level,int trainerID) {
		super(NUMBER,name,true,level,Pokemon.calcGender(MFRATIO),TYPES,
			STATS,EVYIELDS,EXPTYPE,EVOLVES_AT_LVL,EVOLVES_INTO,
			trainerID,BASE_MOVES,LEVEL_UP_MOVES,TMHM_MOVES);
	}
}
